Types And Variables

بازگشت




در اين قسمت به انواع و متغير ها در #C مي پردازيم .
برنامه نويسي در #C با انواع (Type) بسيار مرتبط بوده ، بنابراين براي برنامه نويسي در آن بايد ابتدا نوع هر چيز و طريقه ايجاد آن را بفهميم.
متغيرها، به بيان بسيار ساده، فضا هايي جهت ذخيره اطلاعات هستند. شما اطلاعاتي را در يك متغير قرار مي‌دهيد و از اين اطلاعات به وسيله متغير در عبارات ‍ #C استفاده مي‌ نماييد. كنترل نوع اطلاعات ذخيره شده در متغيرها به وسيله تعيين كردن" نوع " براي هر متغير صورت مي‌ پذيرد.
به طور كلي متغير ها يا از قبل در اين زبان تعريف شده اند يا توسط كاربر تعريف مي شوند.
متغيرهاي از پيش تعريف شده در #C :
انواع از پيش تعريف شده در #C را به همراه نام آنها در .Net FrameWork مي بينيد ، به عبارت ديگه نام آن ها در#C به منزله نام مستعار براي متغيرها در Net FrameWork. مي باشد ، و متداول است كه به هنگام برنامه #C از نام مستعار آن ها استفاده شود.
انواع از پيش تعريف شده كه در جدول زير مي بينيد شامل گروه هاي زير مي باشد:
• نوع (Boolean) كه تنها داراي دو حالت منطقي صحيح(True) و يا غلط(False) مي باشد.
• اعداد صحيح(integer)
• اعداد اعشاري(Floating points)
• نوع كاراكتر


نام اندازه به بيت/نوعمحدوده تغيير.Net FrameWork Type مقدار اوليه
‏bool‏boolean‏true,false
‏System.Boolean
false
‏sbye‏8 bit
-128 _127
‏System.Sbyte0
‏byte‏8 bit
0 _ 255
‏System.Byte0
‏short‏16 bit
-32767 _ 32767
‏System.Int16
0
u‏short‏16 bit
0 _ 65535
‏System.UInt16
0
‏int‏32 bit
-2147483648_ 2147483647
‏System.Int320
u‏int‏32 bit
-4294967295_ 0
‏System.UInt32
0
‏long‏64 bit
- 9223372036854775808_ 9223372036854775807
‏System.Int64
0
u‏long‏64 bit
0 _ 18446744073709551615
‏System.UInt64
0
‏float‏32 bit
1.58 * 10-45 _ 3.4 * 1034
‏System.Single
0.0f
‏double‏64 bit
5* 10-324 _ 1.7 * 10 308
‏System.Double
0.0d
‏decimal‏128 bit
±1.0 * 1028 _± 7.9 * 1028
‏System.Decimal0m
char‏16 bit
‏U+0000 _ U+ffff
‏System.Char\*0000

نكته : در زبان #C نوع char نيز نوع خاصي از انواع عددي است كه رنجي بين صفر تا 65535 دارد و اندازه آن نيز 16 بيتي است، اما به جاي نمايش دادن مقادير عددي تنها مي تواند بيان كننده يك كاراكتر باشد.
نكته : انواعي از نوع floating point هنگامي استفاده مي شوند كه محاسبات عددي به دقت هاي اعشاري نياز داشته باشند. اين نوع تنها در زبان#C وجود دارد و در زبان هاي مشابه به آن نظير Java چنين نوعي در نظر گرفته نشده است.
دو نوع ديگر كه در جدول زير مشاهده مي كنيد ، از پيچيدگي بيشتري برخودار مي باشند:
نام تعريف .NetFrameWork Type
‏object كلاس پايه كه انواع ديگر از آن مشتق مي شوندSystem.Object
‏string يك دنباله از كاراكتر هاي يونيكدSystem.String

در كنار 15 نوع از پيش تعريف شده ، شما هم مي توانيد انواع (Types) خودتان را تعريف كنيد. انواعي كه توسط كاربر قابل تعريف مي باشند ، شامل 6 دسته بوده كه در ادامه آمده است:

• class types
• struct types
• array types
• enum types
• delegate types
• interface type

متغيرها(Variables):
متغيرها، به بيان بسيار ساده، فضاهايي جهت ذخيره اطلاعات هستند. شما اطلاعات را در يك مكان (كه همان متغير است) قرار داده و با استفاده از نام متغير از آن استفاده مي كنيد. كنترل نوع اطلاعات ذخيره شده در متغيرها به وسيله تعيين كردن نوع براي هر متغير صورت مي‌پذيرد. در #C متغير ها شامل چهار دسته ي مختلف بوده كه در جدول زير اين دسته بندي را ملاحظه مي كنيد:

نام توضیح
‏Local Variableاين دسته اطلاعات موقت در داخل محدوده يك متد را نگه داري مي كند
‏ ‏Field اين دسته اطلاعات مربوط به يك نوع را نگه داري مي كند
‏ ‏ ‏Parameter اين دسته براي نگه داري و انتقال اطلاعات از يك متد به متد ديگر به كار مي رود.
‏ ‏Array elementاز اين دسته براي نگه داري اطلاعات موقت يا يك نوع از اطلاعات استفاده مي شود

تعريف متغير:
هر متغيري را قبل از آنكه مورد استفاده قرار بگيرد مي بايست تعريف نمود، تعريف متغير دو عمل را انجام مي دهد :
• نوع و نام هر متغير را مشخص مي كند
• به كامپايلر اجازه مي دهد كه فضايي را در حافظه بدان اختصاص دهد.


public int f()
{
int var1;
return var1;
}
استفاده از var1 مقداري در آن ذخيري نشده است.

public int f()
{
int var1 = 5;
return var1;
}
مي توان متغير را در همان ابتدا مقدار دهي كرد:
public int f()
{
int var1 = new int(); // Default value:0
return var1;
}
همچنين مي توان چند متغير را به طور همزمان و با يك دستور تعريف كرد اما در اين مورد بايد به دو مورد توجه داشته باشيد :
• متغيرهايي كه در يك دستور تعريف مي كنيد بايد داراي نوع (Type) يكساني باشند.
• نام متغيرها بايد به وسيله كاما از يكيدگر جدا گردد.
int  var1=3 , var2 , var3;

int i;
i = "this is a test"; // Error: "Cannot implicitly convert type 'string' to 'int'"
براي رفع اين مشكل مي توان از روش هاي مختلف تبديل متغير(Casting) استفاده نمود، كه در جاي ديگر به مفاهيم آن خواهيم پرداخت.
نكته :هنگامي كه متغيري را از جنس string تعريف مي كنيد برخي از حروف به دلايل مختلف از راه معمولي قابل نمايش نمي باشند، براي رفع اين مشكل در #C از Escape Sequence استفاده مي شود ،تمامي Escape Sequence با يك (\ ) شروع مي شوند و كاراكتر كه در ادامه (\ ) مي آيد وظيفه آن را مشخص مي كند.
لازم است كه بدانيد Escape Sequence تنها به اين منظور نبوده و برخي از آن ها محل قرار گيري مكان نما را تغيير مي دهند ، در نظر داشته باشيد كه خود اين علائم در خروجي نمايش داده نمي شوند . فهرست كامل آن را در جدول زير مشاهده مي كنيد:


‏Character‏Escape Sequence
'\'
"\"
\\\
(كاركتر 7 جدول كد اسكي)‏\a
Backspace(يك كاراكتر را پاك مي كند) (كاراكتر 8 جدول كد اسكي)‏\b
(كاراكتر 12 جدول كد اسكي)
‏\f
(كاراكتر10 جدول كد اسكي)براي انتقال كرسر به خط بعد استفاده مي شود‏\n
براي انتقال كرسر به ابتداي خط فعلي مي باشد(كاراكتر13 جدول كد اسكي)‏\r
براي انتقال كرسر به جلو به اندازه يك tab استفاده مي شود(كاراكتر9 كد اسكي)‏\t
(كاراكتر 11 جدول كد اسكي)‏\v
يك كاراكتر يونيكد كه به وسيله كدش مشخص شده باشد‏\u
يك كاراكتر يونيكد كه به وسيله كدش در مبناي هگزادسيمال مشخص شده باشد ‏\x
Null(كاراكتر 0 جدول كد اسكي)\0


مثالي براي Escape Sequence:
using System;


class Welcome
{
static void Main(string[] args)
{
Console.Write("\t\u0048\u0065\u006C\u006C\u006F \n\twelcome\n\tto\n\t\"C#\" Programming!");
Console.ReadLine();
}
}

/* output:
Hello
to
"C#" Programming!
*/


حال مثالي ساده را با يكديگر بررسي مي كنيم!
مثال:
using System;

class Addition
{
static void Main( string[] args )
{
string firstNumber, // تعيريف دو متغير به طور همزمان
secondNumber;

// تعيريف سه متغير به طور همزمان

int number1, // first number to add
number2, // second number to add
sum; // sum of number1 and number2

// متن مورد نظر را روي صفحه نشان مي دهد
Console.Write( "Please enter the first integer: " );

// قرار دادن ورودي خوانده شده از صفحه كليد در متغيراول
firstNumber = Console.ReadLine();

Console.Write( "\nPlease enter the second integer: " );

// قرار دادن ورودي خوانده شده از صفحه كليد در متغيراول
secondNumber = Console.ReadLine();

// تبديل نمودن نوع رشته به نوع عددي توسط يك متد
number1 = Int32.Parse( firstNumber );
number2 = Int32.Parse( secondNumber );

// جمع نمودن اعداد
sum = number1 + number2;

// نمايش نتيجه در خروجي
Console.WriteLine( "\nThe sum is {0}.", sum );

} // end method Main

} // end class Addition



بن مایه ها:

 Illustrated C# 2008 by Daniel Solis